﻿using System;
using System.Collections.Generic;

namespace Sinacor.Servico.Bovespa.Ordens.Service.ServiceImplementation.Translator.DataContractToBusinessEntity
{
    /// <summary>
    /// Translator.DataContractToBusinessEntity Class - AjusteMercadoFuturo
    /// </summary>
    public class AjusteMercadoFuturo
    {
        #region Métodos

        /// <summary>
        /// Traduzir um contrato de dados do tipo MercadoFuturoRequest para uma entidade de negócio MercadoFuturo
        /// </summary>
        /// <param name="from">Contrao de dados AjusteMercadoFuturoRequest</param>
        /// <returns>Entidade de negócio AjusteMercadoFuturo</returns>
        public BusinessEntity.AjusteMercadoFuturo ToAjusteMercadoFuturo(DataContract.Request.AjusteMercadoFuturoRequest from)
        {
            BusinessEntity.AjusteMercadoFuturo to = new BusinessEntity.AjusteMercadoFuturo();

            to.AnoPregao = from.AnoPregao;
            to.CodigoNegocio = from.CodigoNegociacao;
            to.DataPregao = from.DataPregao;
            to.Fator = from.Fator;
            to.PrecoExercicio = from.PrecoExercicio;
            to.Tipo = (BusinessEntity.Enum.TipoMercado)new System.ComponentModel.EnumConverter(from.Tipo.GetType()).ConvertFrom(from.Tipo.ToString()); 
            to.ValorAjusteAnterior = from.ValorAjusteAnterior;
            to.ValorAjusteAtual = from.ValorAjusteAtual;
            to.Variacao = from.Variacao;

            return to;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public List<BusinessEntity.AjusteMercadoFuturo> ToAjusteMercadoFuturo(List<DataContract.Request.AjusteMercadoFuturoRequest> from)
        {
            List<BusinessEntity.AjusteMercadoFuturo> to = new List<BusinessEntity.AjusteMercadoFuturo>();
            foreach (DataContract.Request.AjusteMercadoFuturoRequest itemFrom in from)
            {
                to.Add(this.ToAjusteMercadoFuturo(itemFrom));
            }

            return to;
        }

        /// <summary>
        /// Traduzir um contrato de dados FiltroAjusteMercadoFuturoRequest para uma entidade de negócio FiltroAjusteMercadoFuturo
        /// </summary>
        /// <param name="from">Contrato de dados FiltroAjusteMercadoFuturoRequest</param>
        /// <returns>Entidade de negócio FiltroAjusteMercadoFuturo</returns>
        public BusinessEntity.Parameter.FiltroAjusteMercadoFuturo ToFiltroAjusteMercadoFuturo(DataContract.Request.FiltroAjusteMercadoFuturoRequest from)
        {
            BusinessEntity.Parameter.FiltroAjusteMercadoFuturo to = new BusinessEntity.Parameter.FiltroAjusteMercadoFuturo();

            to.CodigoNegociacao = from.CodigoNegociacao;
            to.DataPregao = from.DataPregao;

            return to;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public List<BusinessEntity.Parameter.FiltroAjusteMercadoFuturo> ToFiltroAjusteMercadoFuturo(List<DataContract.Request.FiltroAjusteMercadoFuturoRequest> from)
        {
            List<BusinessEntity.Parameter.FiltroAjusteMercadoFuturo> to = new List<BusinessEntity.Parameter.FiltroAjusteMercadoFuturo>();
            foreach (DataContract.Request.FiltroAjusteMercadoFuturoRequest itemFrom in from)
            {
                to.Add(this.ToFiltroAjusteMercadoFuturo(itemFrom));
            }

            return to;
        }

        #endregion
    }
}